home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 501-525 / disk_512 / csh / tips.doc < prev    next >
Text File  |  1992-05-06  |  6KB  |  202 lines

  1. Some good ideas:
  2.  
  3.  
  4.     EDITING
  5.  
  6.  
  7. The very common situation:
  8. $ mkdir documents
  9. $ cd documents
  10. can be abbreviated to:
  11. $ mk documents
  12. $ [CTRL-T]              (inserts all but first word of previous line)
  13.  
  14.  
  15. Also very common:
  16. $ mv document document1
  17. $ mv document[CTRL-P]1
  18. The CTRL-P function duplicates the previous word on the command line
  19.  
  20.  
  21. You  might  have  wondered  what  CTRL-N  (leave current line) is good for.
  22. Assume, for example, you just typed
  23. $ rm dh1:graphics/lo-res/gorilla
  24. when  it comes to your mind that would prefer to keep a copy of that pic on
  25. diskette.  Many would now delete this command line.  Being a smart guy, you
  26. do the following:
  27. $ [CTRL-N]              (leaves this command line alone)
  28. $ co[CTRL-T] df0:
  29. $ [Up-Arrow][Up-Arrow]  (gets back the command line you left)
  30.  
  31.  
  32. In case you don't know what history completion is:
  33. $ search *.c *.h makefile foobar
  34. $ ram:
  35. $ dir
  36. $ rm tmpfile
  37. Now if want to repeat the search command, enter
  38. $ se[Shift-Up-Arrow]
  39. which brings up the the last command that started with 'se'.
  40.  
  41.  
  42. If you want to delete the file
  43. $ rm dh2:comm/uucp/mail/junk/409
  44. and you're far away from that directory, enter
  45. $ ju[ESC-c]409          (enters the resulting path of cd ju)
  46.  
  47.  
  48. The  same function is also usable for 'cd'.  Assume you have several 'junk'
  49. directories:
  50. $ ju[ESC-c][CTRL-R][CTRL-R][CTRL-R]
  51. Like  this  you'll cycle through the junk directories.  When you've got the
  52. right one, press enter.
  53.  
  54.  
  55. Assume  there  are the files comm1.c, comm2.c, and comm3.c as well as their
  56. corresponding .o files.  You want comm3.c:
  57. $ co[Shift-Tab]1[Tab]
  58. Of course this is more useful with longer file names.
  59.  
  60.  
  61. You can tab file name expand any patterns, not only abbreviations.  Assume
  62. you want to delete all .c files in the current directory but the last:
  63. $ rm *.c[ESC-Tab][CTRL-W]
  64. In addition, you get to see all the files once again before deleting them.
  65.  
  66.  
  67. Next one: You have entered:
  68. $ dir
  69. $ foreach i ( *.c ) "e >>ram:temp $i
  70. $ more ram:temp
  71. and you would like to execute the same three statements again, enter:
  72. $ [Up-Arrow][Up-Arrow][Up-Arrow][ESC-Return][CTRL-R][CTRL-R]
  73.  
  74.  
  75. I  know  that  the editing is not very user friendly.  This is because it's
  76. quite  hard  and troublesome to get raw keycodes from the console, and it's
  77. impossible  to  get  them  from a VT200 terminal.  Therefore I had to stick
  78. with CTRL and ESC combinations. Once you have learnt them (some of them are
  79. similar to EMACS), you can save lots of typing.
  80.  
  81.  
  82.     COMMANDS
  83.  
  84.  
  85. My  advice  here  is clear:  Use aliases, aliases, aliases.  In order to be
  86. able  to  create  them as quickly as possible, create an alias (e.g.  'le')
  87. that edits your login file, plus another one (e.g.  'lx'), that re-executes
  88. it.   My  login  contains  almost  only aliases, everthing else I've put in
  89. 'firstlogin.sh'.
  90.  
  91.  
  92. If you don't like the default options of one command, you can add more of
  93. them using an alias:
  94. $ alias dir "dir -q
  95. From now on, blocks will no longer be displayed in 'dir'.
  96.  
  97.  
  98. If your aliases have arguments, e.g.
  99. $ alias sc "search *.c
  100. problems arise when you try to specify options. e.g. case sensitivity:
  101. $ sc -c "hello world
  102. this will obviously not work. That's what @pickopts is good for:
  103. $ alias sc "%a search @pickopts( $a ) *.c @pickargs( $a )
  104.  
  105.  
  106. Once you have more aliases, it is useful to keep them sorted.  You might
  107. also document them: Create a file 'aliases.doc', and perform
  108. $ set _man aliases.doc csh.doc
  109. That way, you can document them in a separate file.
  110.  
  111.  
  112. If you would like to create aliases that accept arguments, you can implement
  113. them using 'if -o'.
  114. $ alias good "%a if -o v $a;echo -n "very ";endif;echo good work, @arg( $a )
  115. $ good sam          --> good work, sam
  116. $ good -v sam       --> very good work, sam
  117.  
  118.  
  119. 'cat' can be used to create small text files:
  120. $ cat >myfile
  121. hello
  122. [CTRL-\]
  123. The key combination CTRL-\ creates an end-of-file character.
  124.  
  125.  
  126.     FUNCTIONS
  127.  
  128.  
  129. @age is very useful for archiving scripts:
  130. $ foreach i ( * ) "if @age( $i ) > 30;cp -m $i backup:;endif
  131.  
  132.  
  133. @clinum can be used for making 'break' and 'pri' more flexible:
  134. $ alias break "%a break @clinum( $a )
  135. Now you can, for example, 'break cc'. Cli numbers are still allowed.
  136.  
  137.  
  138. @complete simulates the effect of tab file name completion. That
  139. way, you need no longer press TAB for it:
  140. $ alias edit "%a ced @complete( $a * )
  141.  
  142.  
  143. @confirm can be used for a safe 'rm':
  144. $ alias rm "%a rm @confirm( $a )
  145.  
  146.  
  147. @howmany is useful at startup:
  148. $ if $howmany = 1;window -l;endif
  149.  
  150.  
  151. @intersect, @union and @without are well suited for a lot of applications.
  152. If you store, for example, all files a friend of yours owns, in the variable
  153. $him, (he can do a 'dir -np .../ >temp', you then do a 'readf him <temp'),
  154. and your files in $me, then you can learn what he has and you don't using
  155. $ echo @without( $him , $me )
  156. To ignore different path names, use
  157. $ set him @basename( $him )
  158. If you have the the file names without the path, you can find out the path
  159. by 'search'ing the file temp.
  160.  
  161.  
  162. @opt and @arg are needed whenever you have an alias that already specififies
  163. some arguments, but allows the user to specify additional options.
  164. $ alias sc "%a search @opt( $a ) *.c @arg( $a )
  165.  
  166.  
  167. @volume can be used to test if there is a disk in a certain drive. It will
  168. suppress requesters and return an empty string if no disk present.
  169.  
  170.  
  171.     VARIABLES
  172.  
  173.  
  174. $_except can be made local. In that case you have a special exception 
  175. handling for the current alias or batch file.
  176.  
  177.  
  178. $_man may contain the names of more than one .doc file. That way, you
  179. may add documentation to your own aliases.
  180.  
  181.  
  182. When working with large files in pipes, you might want to set $_pipe
  183. to a directory on your hard disk.
  184.  
  185.  
  186.     PARSER
  187.  
  188.  
  189. If you need to append a string to a variable, you can do it like this:
  190. $ set foo bar
  191. $ echo $foo\bara    --> barbara
  192. The \ isn't necessary if the first character of the string to be appended
  193. is neither a letter nor digit.
  194.  
  195. To make sure no internal command is executed, capitalize the first letter
  196. of your command:
  197. $ Dir ram: ALL
  198.  
  199. To override existing aliases to a command, enter:
  200. $ alias echo "xxxxxx
  201. $ \echo hello    -->  hello
  202.